The need for coding arises from the large volume of data communicated or stored in communication systems. Transmissions in communication systems are usually quite intolerant to interference due to the interest of using the spectrum as efficiently as possible. Therefore coding is required to ensure proper performance. Coding is needed in encryption as well.
In an encoder, a data sequence is transformed into another sequence. Typically, the new sequence is longer having more redundancy than the original data sequence. Each symbol in the new coded sequence may be represented by a group of bits.
The error probability of a code is mainly determined by a distance spectrum of the code. For linear codes, the distance spectrum is the same as a weight spectrum. At a low bit error rate (BER), the smallest weight and its multiplicity (number of code words having the smallest weight) tends to determine the performance of a code. Hence, a code that has a large minimum Hamming distance gives the best performance at a low BER.
In one prior art code, a parity row is added into an extended Hamming product code matrix. The code is described in US 2001/0050622 A1, which is taken herein as a reference. However, it has been noticed in simulations that it is difficult to predict the effects of the added parity row, which makes the designing of the best possible code with the desired Hamming distance laborious.